<?php

#Arquivos MVC
require ('loginModel.php');
require ('loginView.php');
require ('controller.php');


/**
 * loginController
 *
 * Esta classe contém as funções de acesso a dados do objeto login.
 *
 * @package 	Login
 * @category controller
 * @name loginController.php
 * @author Janaína Paixão <janainap@gmail.com>
 * @copyright Elo Assessoria e Sistemas
 * @license Janaína Paixão
 * @version v1.0
 * @since v1.0
 */

class loginController extends Controller
{

    public $model;
    public $view;

    /**
     * loginController::_construct()
     *
     * Construtor da classe - Instancia os objetos model e view.
     *
     * @access public
     * @author Janaína Paixão <janainap@gmail.com>
     * @since  v1.0
     */
    public function __construct()
    {
        $this->model = new loginModel();
        $this->view = new loginView(); 
    }


    /**
     * loginController::telaInicial()
     *
     * Exibe a tela inicial para a entrada de usuário e senha.
     *
     * @access public
     * @author Janaína Paixão <janainap@gmail.com>
     * @since  v1.0
     */
    public function telaInicial()
    {
        $GLOBALS['info']['acao']="login.php?acao=autoriza";
        $this->view->inicialLogin();
    }


  


    /**
     * loginController::autoriza()
     *
     * Verifica se o usuário está autorizado a acessar o sistema. 
     * 
     * Se os dados de acesso estiverem incorretos, atualiza o número de tentativas de acesso com falha do usuário.
     * 
     * Se o usuário for bloqueado, notifica os adminidtradores do sistema.
     * 
     * Se o usuário não estiver bloqueado e os dados de acesso estiverem corretos, autoriza o acesso ao sistema.
     *
     * @access public
     * @author Janaína Paixão <janainap@gmail.com>
     * @since  v1.0
     */
    public function autoriza()
    { 
        
        
        #Verifica se o usuário existe


        if ($this->model->verificaExistenciaUsuario() <> false)
        {

            #Verificando se o usuário tem acesso ao sistema
            $info_usuario = $this->model->selecionaUsuario();
            $info_usuario->fetch();


            if (!empty($info_usuario->nome))
            { #Autorizando o acesso do usuário


                #Verifica se o usuário está bloqueado
                if ($info_usuario->tentativas >= 10)
                {
                   
                    die("Usuário bloqueado.");
                    
                }

                $data_hora = date('H:m:s');
                $data = date('m.d.y');

                #Obtendo chave de acesso
                $cod = $data_hora . $usuario . $data ;
                $num = rand(1, 10);
                $cod = substr($cod, 1, $num);
                $codigo = md5($cod);
                $ultimo_acesso = date("Ymd");

                
                session_start();
                
                #Obtém grupos de acesso dos quais o usuário faz parte
      //          $_SESSION['gruposAcessoUsuario']=$this->model->obterGruposAcessoUsuario($info_usuario->codigoUsuario);
                
                #Gravando variáveis de identificação do usuário
                $_SESSION['codigo_usuario'] = $info_usuario->codigoUsuario;
                $_SESSION['filial_usuario'] = $info_usuario->codigoLoja;
                $_SESSION['login'] = $info_usuario->login;
                $_SESSION['tipo_usuario'] = $info_usuario->codigoTipoUsuario;
                
                //esses valores so existem quando o usuario logado e um administrador ou gerente
                $_SESSION['preferencia_loja'] = $info_usuario->preferenciaLoja;
                $_SESSION['preferencia_vendedor'] = $info_usuario->preferenciaVendedor;
                 
               
                setcookie("codigo", $codigo);


                #Gravando chave de acesso no banco
                $this->model->atualizaAutenticacao($info_usuario->codigoUsuario, $info_usuario->
                    login, $info_usuario->codigoTipoUsuario, $codigo);


            /*   $protocolo = (strpos(strtolower($_SERVER['SERVER_PROTOCOL']), 'https') === false) ? 'http' : 'https';
 
               $protocolo    = (strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https') === false) ? 'http' : 'https';
 
               $host         = $_SERVER['HTTP_HOST'];
             
               $UrlAtual     = $protocolo . '://' . $host ;
               
               
               $this->redirecionarPagina($UrlAtual.'/patriciaNoivas/tmpl/sistema/index.php');
               */
             
               $this->redirecionarPagina('sistema.php');


            } else
            {
                #Executa função para registrar a tentativa de acesso com senha inválida
                $registra_tentativa = $this->model->somaTentativaErro($codigo_usuario);

            }

        } else
        {
            $this->redirecionarPagina('login.php');
        } //Fim if existe

    } //Fim função autoriza


    /**
     * loginController::logoff()
     *
     * Possibilita a troca de usuários do sistema encerrando a sessão do usuário anterior.
     *
     * @access public
     * @author Janaína Paixão <janainap@gmail.com>
     * @since  v1.0
     */
    public function logoff()
    {

        #Anulando cookies de identificação do usuário.
        session_start();
        
        $this->model->desconecta($_SESSION['login']);
        
        setcookie("codigo", '');

        $_SESSION['codigo_usuario'] = "";
        $_SESSION['login'] = "";
        $_SESSION['tipo_usuario'] = "";
        $_SESSION['secretaria'] = "";
        $_SESSION['codigo_unidade'] = "";
        $_SESSION['nome_unidade'] = "";


        header("Location:login.php?acao=telaInicial");


    }


}

?>